package com.gator.kafka;

import org.apache.kafka.clients.producer.Partitioner;
import org.apache.kafka.common.Cluster;

import java.util.Map;

/**
 * 自定义分区器
 * 根据一定规则 控制生产者数据的去向（分区）
 */
public class PABLO_MyPartition implements Partitioner {
    /**
     * @Description:定义分区规则
     * @Author: PABLO
     * @Date: 2022/5/31 11:59
     * @Params: [topic, key, keyBytes序列化后的key, value, valueBytes 序列化后的value, cluster kafka集群]
     * @Return: int
     **/
    @Override
    public int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster) {
        System.out.println("enter");
        //如根据value值控制去向
        //如value包含hello，发往0分区，否则发往1分区
        String string = value.toString();
        if (string.contains("hello")) {
            return 0;
        } else {
            return 1;
        }
        //可获得该topic的所有分区
        //List<PartitionInfo> list = cluster.partitionsForTopic(topic);
    }

    @Override
    public void close() {

    }

    @Override
    public void configure(Map<String, ?> configs) {

    }

}
